En primer lugar leemos los datos tratados anteriormente, que contienen información sobre los vuelos en EEUU en 2023. Además, leemos los datos de 2022 y 2021 para hacer alguna comparación. Estos datos van a estar en segundo plano y los usaremos en algún caso para comparar.
df=read.csv("C:/Users/carle/Desktop/Ciencia de datos/SEGUNDO/2n Cuatri/ProyII/VUELOS/vuelos_completo_limpiado1.csv")
df_2021=read.csv("C:/Users/carle/Desktop/Ciencia de datos/SEGUNDO/2n Cuatri/ProyII/VUELOS/vuelos_completo_2021.csv")
df_2022=read.csv("C:/Users/carle/Desktop/Ciencia de datos/SEGUNDO/2n Cuatri/ProyII/VUELOS/vuelos_completo_2022.csv")
Vamos a hacer un top 5 de las compañías con más y menos vuelos de nuestra base de datos. Para ello, utilizamos la función table para contar el número de vuelos por compañía y luego seleccionamos las 5 compañías con más y menos vuelos. Para la visualización de los datos, utilizamos la librería ggplot2.
top_10_companies <- names(head(sort(table(df$NOMBRE_COMP), decreasing = TRUE), 5))
datos_top_10_comp<- df[df$NOMBRE_COMP %in% top_10_companies, ]
datos_top_10_comp$ORIGIN <- factor(datos_top_10_comp$NOMBRE_COMP, levels = top_10_companies)
ggplot(datos_top_10_comp, aes(x = ORIGIN)) +
geom_bar(fill = "skyblue", color = "black") +
labs(x = "Compañia", y = "Número de vuelos", title = "Top 5 compañias con más vuelos") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Destacamos la compañía Southwest Airlines como la compañía con mayor número de vuelos, habiendo sido responsable de más de un millón de vuelos.
Visualizamos ahora las 5 compañías con menos vuelos:
bottom_10_companies <- names(tail(sort(table(df$NOMBRE_COMP), decreasing = TRUE), 5))
datos_bottom_10_comp<-df[df$NOMBRE_COMP %in% bottom_10_companies, ]
datos_bottom_10_comp$ORIGIN <- factor(datos_bottom_10_comp$NOMBRE_COMP, levels = bottom_10_companies)
ggplot(datos_bottom_10_comp, aes(x = ORIGIN)) +
geom_bar(fill = "skyblue", color = "black") +
labs(x = "Compañia", y = "Número de vuelos", title = "Top 5 compañias con menos vuelos") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
La compañía con menos vuelos nacionales de EEUU es GoJet Airlines LLC, con menos de 50000 vuelos durante todo 2023.
Siguiendo con las compañías y los aeropuertos, realizando la función aeropuertos_por_compañia podremos obtener el número de aeropuertos con los que trabaja cada compañía. En estas lineas de código, se crea un nuevo dataframe donde se agrupan los datos por compañía y se calcula el número de aeropuertos únicos con los que opera cada compañía. Además, se crea una columna adicional que contiene los nombres de los aeropuertos con los que opera cada compañía.
aeropuertos_por_compañia <- aggregate(
ORIGIN ~ NOMBRE_COMP,
data = df,
FUN = function(x) c(n_distinct(x), toString(unique(x)))
)
names(aeropuertos_por_compañia) <- c("Nombre_Compañia", "Aeropuertos")
aeropuertos_por_compañia$nombre_aeroupuertos=aeropuertos_por_compañia$Aeropuertos[,2]
aeropuertos_por_compañia$num_aeropuertos=aeropuertos_por_compañia$Aeropuertos[,1]
aeropuertos_por_compañia <- subset(aeropuertos_por_compañia, select = -Aeropuertos)
aeropuertos_por_compañia$num_aeropuertos <- as.numeric(aeropuertos_por_compañia$num_aeropuertos)
Una vez creada, visualizamos con un histograma el número de aeropuertos por compañía utilizando el dataframe creado anteriormente:
ggplot(aeropuertos_por_compañia, aes(x =Nombre_Compañia, y = num_aeropuertos)) +
geom_bar(stat = "identity", fill = "skyblue") +
labs(title = "Número de aeropuertos por compañía",
x = "Compañía",
y = "Número de aeropuertos") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Aquí cabe destacar que la compañía con más aeropuertos en los que opera es SkyWest Airlines Inc., con más de 250 aeropuertos en los que opera. Southwest Airlines Co., la compañía con más vuelos, opera en poco más de 100 aeropuertos, lo que nos hace pensar que la compañía SkyWest Airlines Inc. opera en aeropuertos más pequeños, mientras que Southwest Airlines Co. opera en aeropuertos más grandes.
Otra compañía que resalta mucho es Hawaiian Airlines Inc., que opera con diferencia, con muchos menos aeropuertos que las demás compañías.Esto es porque es una compañía que trabaja principalmente en Hawaii, y trabaja con un número limitado de aeropuertos de Estados Unidos.
Ahora, representamos mediante un diagrama de tarta las 5 compañías que trabajan en más aeropuertos:
aeropuertos_por_compañia <- aeropuertos_por_compañia[order(-aeropuertos_por_compañia$num_aeropuertos), ]
top_compañias <- head(aeropuertos_por_compañia, 5)
ggplot(top_compañias, aes(x = "", y = num_aeropuertos, fill = Nombre_Compañia)) +
geom_bar(stat = "identity", width = 1,color="black") +
geom_text(aes(label = num_aeropuertos), position = position_stack(vjust = 0.5), color = "white")+
coord_polar("y", start = 0) +
labs(title = "Cinco compañías con más aeropuertos",
fill = "Nombre de Compañía",
y = "Número de aeropuertos",
x = "") +
theme_void() +
theme(legend.position = "right")
Podemos destacar que la compañía con más vuelos registrados en la base de datos, Southwest Airlines Co., no figura entre el top 5 de compañías con más aeropuertos en los que opera. Debería existir una correlación entre el número de aeropuertos en los que opera una compañía y el número de vuelos que realiza, ya que, cuantos más aeropuertos tenga una compañía,lo normal seria que más vuelos podrá realizar. Vamos a calcular la correlación de Pearson para ver si realmente existe esta correlación.
correlacion_aeropuertos_vuelos <- cor.test(aeropuertos_por_compañia$num_aeropuertos, table(df$NOMBRE_COMP), method = "pearson")
correlacion_aeropuertos_vuelos
##
## Pearson's product-moment correlation
##
## data: aeropuertos_por_compañia$num_aeropuertos and table(df$NOMBRE_COMP)
## t = -1.218, df = 19, p-value = 0.2381
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.6278613 0.1839404
## sample estimates:
## cor
## -0.2691154
Esto indica una correlación negativa débil entre el número de aeropuertos por compañía y el número de vuelos por compañía. El p-valor es mayor que 0,05, lo que indica que aceptamos la hipótesis nula y no existe correlación entre el número de aeropuertos que maneja cada compañía y el número de vuelos por compañía.
Vamos a crear un nuevo dataframe con todas las variables de interés
de compañías. Este dataframe se llamará resumen_compañías y contendrá
las siguientes variables:
- NOMBRE_COMP: Nombre de
la compañía
- total_salidas: Número total de
salidas
- salidas_retrasadas: Número de salidas
retrasadas
- salidas_adelantadas: Número de
salidas adelantadas
- prob_retraso: Probabilidad
de retraso de la compañía
- salidas_puntuales:
Número de salidas puntuales
- media_retraso: Media
de retraso en minutos
- media_adelanto: Media de
adelanto en minutos
- indice_rendimiento: Índice
de rendimiento de la compañía, calculado como la media de retraso por la
probabilidad de retraso
Para ello utilizamos la función summarise para calcular las variables de interés y la función group_by para agrupar los datos por compañía, ambas de la libreria dplyr.
resumen_compañias <- df %>%
group_by(NOMBRE_COMP) %>%
dplyr::summarise(
total_salidas = n(),
salidas_retrasadas = sum(DEP_DELAY > 0, na.rm = TRUE),
salidas_adelantadas = sum(DEP_DELAY < 0, na.rm = TRUE),
prob_retraso = round(salidas_retrasadas / total_salidas, 2),
salidas_puntuales = sum(DEP_DELAY == 0, na.rm = TRUE),
media_retraso = round(sum(DEP_DELAY[DEP_DELAY > 0], na.rm = TRUE) / sum(DEP_DELAY > 0, na.rm = TRUE), 2),
media_adelanto = -1*round(sum(DEP_DELAY[DEP_DELAY < 0], na.rm = TRUE) / sum(DEP_DELAY < 0, na.rm = TRUE), 2),
indice_rendimiento= round(media_retraso*prob_retraso,2)
)
Vamos a ver como se distribuye el índice de rendimiento de las compañías en un gráfico de barras, para después, agruparlas en tres categorías: Bueno, Normal y Malo, dependiendo de su índice de rendimiento.
resumen_compañias <- resumen_compañias[order(-resumen_compañias$indice_rendimiento), ]
ggplot(resumen_compañias, aes(x = reorder(NOMBRE_COMP, indice_rendimiento), y = indice_rendimiento)) +
geom_bar(stat = "identity", fill = "skyblue") +
labs(title = "Índice de Rendimiento por Compañía",
x = "Compañía",
y = "Índice de Rendimiento") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Viendo la distribución observamos que el rango de este índice para
las compañías es de aproximadamente de 8 a 28. Así que vamos a
dividirlas según un rango de valores para poder clasificarlas en Bueno,
Normal y Malo.
El rendimiento categorizado como “Bueno” será aquel
cuyo índice de rendimiento esté entre 0 y 12, el rendimiento
categorizado como “Normal” será aquel cuyo índice de rendimiento esté
entre 12 y 18 y el rendimiento categorizado como “Malo” será aquel cuyo
índice de rendimiento sea mayor de 18.
Rendimiento sera una nueva
columna en el dataframe resumen_compañías que contendrá la categoría de
rendimiento de cada compañía, para así poder diferenciarlas y trabajar
con algunas de ellas.
resumen_compañias$rendimiento <- cut(resumen_compañias$indice_rendimiento, breaks = c(-Inf, 12, 18, Inf), labels = c("Bueno", "Normal", "Malo"))
Ahora vamos a observar las mejores y peores compañías en cuanto a rendimiento, es decir, las que tienen un índice de rendimiento más bajo y más alto, respectivamente. En primer lugar, visualizaremos las compañías “green flag”, es decir, aquellas que lo hacen generalmente bien en cuanto a retraso. Por otro lado, observaremos también aquellas compañías que tienen un rendimiento “malo”, es decir, aquellas que añadiremos a nuestra “lista negra” de compañías.
Para ello, utilizaremos un gráfico de tarta con la libreria ggplot2 que muestre el índice de rendimiento de cada compañía, agrupando las compañías en dos categorías: Bueno y Malo.
ggplot(subset(resumen_compañias, rendimiento == "Bueno"), aes(x = "", y = indice_rendimiento, fill = NOMBRE_COMP)) +
geom_bar(stat = "identity", width = 1,color="black") +
geom_text(aes(label = indice_rendimiento), position = position_stack(vjust = 0.5), color = "white") +
coord_polar("y", start = 0) +
labs(title = "Compañías con Rendimiento Bueno",
fill = "Nombre de Compañía",
y = "Índice de Rendimiento",
x = "") +
theme_void() +
theme(legend.position = "right")
En primer lugar cabe recalcar antes de mirar el dibujo, que un menor
índice significa un mejor funcionamiento de la compañía. Por lo tanto,
las compañías con índices más bajos son las que tienen un mejor
rendimiento.En el gráfico, se verán con menor proporción los que mejor
rendimiento tienen, y con mayor proporción los que peor rendimiento
tienen, ya que el gráfico tarta, la porción es más grande cuando el
número es más grande. Dejando claro esto, vamos a analizar los gráficos.
Las compañías con mejor rendimiento por orden son:
1. Horizon
Air
2. Republic Airline
3. Envoy Air
4. Alaska Airlines
Inc.
5. Piedmont Airlines
6. Endeavor Air
ggplot(subset(resumen_compañias, rendimiento == "Malo"), aes(x = "", y = indice_rendimiento, fill = NOMBRE_COMP)) +
geom_bar(stat = "identity", width = 1,color="black") +
geom_text(aes(label = indice_rendimiento), position = position_stack(vjust = 0.5), color = "white") +
coord_polar("y", start = 0) +
labs(title = "Compañías con Rendimiento Malo",
fill = "Nombre de Compañía",
y = "Índice de Rendimiento",
x = "") +
theme_void() +
theme(legend.position = "right")
De estas seis elegiremos Republic Airline para hacer un análisis más
detallado ya que es la segunda en el ranking y tiene un número
considerable de vuelos. Ahora pasamos a la lista negra de compañías, es
decir, aquellas con peor rendimiento. Las compañías con peor rendimiento
por orden son:
1. JetBlue Airways
2. Frontier Airlines
Inc.
3. Mesa Airlines Inc.
4. Spirit Airlines
5. Air
Wisconsin Airlines Corp.
6. Allegiant Air
7. American Airlines
Inc.
Estas compañías son las peor clasificadas por nuestra métrica de rendimiento, por lo que vamos a elegir JetBlue Airways para hacer un análisis más detallado, ya que es la peor clasificada y tiene un número considerable de vuelos.
Antes de empezar con el análisis de las compañías que hemos elegido, vamos a ver si existe correlación entre el número de vuelos que realiza una compañía y su índice de rendimiento. Para ello, vamos a calcular la correlación de Pearson entre estas dos variables.
correlacion_indice_numvuelos=cor.test(resumen_compañias$total_salidas,resumen_compañias$indice_rendimiento)
print(correlacion_indice_numvuelos)
##
## Pearson's product-moment correlation
##
## data: resumen_compañias$total_salidas and resumen_compañias$indice_rendimiento
## t = -0.16912, df = 19, p-value = 0.8675
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.4627121 0.3996053
## sample estimates:
## cor
## -0.03876941
No existe correlación entre el número de vuelos que realiza la compañía y su índice de rendimiento, debido a que el coeficiente de Pearson es muy cercano a 0 y el p-valor es mayor que 0,05, por tanto aceptamos la hipótesis nula que es que no hay relación.
Ahora, vamos a estudiar si existe alguna relación entre el retraso en la salida y el retraso en la llegada de los vuelos en EEUU. Para ello, vamos a comparar la media de retraso de salida y la media de retraso de llegada para cada compañía aérea. Crearemos una nueva tabla con la media de retraso de salida y la media de retraso de llegada para cada compañía y luego realizaremos un gráfico de barras comparando ambas medias.
medias_retrasos <- df %>%
group_by(NOMBRE_COMP) %>%
dplyr::summarise(media_retraso_salida = mean(salida_retraso, na.rm = TRUE),
media_retraso_llegada = mean(llegada_retraso, na.rm = TRUE))
medias_retrasos_long <- medias_retrasos %>%
pivot_longer(cols = c(media_retraso_salida, media_retraso_llegada),
names_to = "tipo_retraso",
values_to = "media_retraso")
ggplot(medias_retrasos_long, aes(x = NOMBRE_COMP, y = media_retraso, fill = tipo_retraso)) +
geom_col(position = "dodge") +
labs(title = "Comparación de la Media de Retrasos de Salida y Llegada por Compañía",
x = "Compañía", y = "Media de Retraso") +
scale_fill_manual(values = c("skyblue", "red")) +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Podemos observar que no existe mucha diferencia entre la media de retraso de salida y la media de retraso de llegada para cada compañía aérea. Entonces, no se puede afirmar que en EEUU las compañías hacen que su vuelo vaya más rápido para paliar el retraso de salida. Para confirmar esto, vamos a calcular la correlación de Pearson entre la media de retraso de salida y la media de retraso de llegada para todas las compañías aéreas.
correlation <- cor.test(df$salida_retraso, df$llegada_retraso, method = "pearson")
print(correlation)
##
## Pearson's product-moment correlation
##
## data: df$salida_retraso and df$llegada_retraso
## t = 14447, df = 7167042, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.9832369 0.9832855
## sample estimates:
## cor
## 0.9832612
Como podemos observar, la correlación de Pearson entre la media de retraso de salida y la media de retraso de llegada es de 0.99, lo que indica una fuerte correlación positiva entre ambas variables. Por lo tanto, podemos concluir que, en general, no hay distinción entre el retraso en la llegada y el retraso en la salida de los vuelos en EEUU.
Vamos a realizar ahora gráficos de barras horizontales para visualizar la probabilidad de retraso de cada compañía y el número total de vuelos que realiza cada compañía. De esta forma, podremos ver si existe alguna relación entre el número de vuelos y la probabilidad de retraso de una compañía.
# Ordenar el dataframe por probabilidad de retraso de forma descendente
datos_companias <- resumen_compañias[order(-resumen_compañias$prob_retraso), ]
# Crear el gráfico de barras horizontal
ggplot(datos_companias, aes(x = reorder(NOMBRE_COMP, prob_retraso), y = prob_retraso)) +
geom_bar(stat = "identity", fill = "skyblue") +
geom_text(aes(label = paste(round(prob_retraso * 100, 2), "%")), hjust = -0.1, size = 3, color = "black") +
labs(x = "Compañía", y = "Probabilidad de Retraso",
title = "Probabilidad de Retraso por Compañía") +
theme_minimal() +
theme(axis.text.y = element_text(size = 8),
axis.title.x = element_text(size = 10, face = "bold"),
axis.title.y = element_text(size = 10, face = "bold"),
plot.title = element_text(size = 12, face = "bold", hjust = 0.5)) +
coord_flip()
# Ordenar el dataframe por probabilidad de retraso de forma descendente
datos_companias <- datos_companias[order(-datos_companias$total_salidas), ]
# Gráfico de barras horizontal
ggplot(datos_companias, aes(x = reorder(NOMBRE_COMP, total_salidas), y = total_salidas)) +
geom_bar(stat = "identity", fill = "skyblue") +
coord_flip()
La compañía con más probabilidad de retraso,Southwest Airlines CO., es también aquella con mayor número de vuelos. Es por eso, que nos hace pensar si existe correlación entre el número de vuelos y la probabilidad de retraso. Es decir, ¿cuánto más grande es una compañía tiene mayor probabilidad de retrasarse? Para responder a esta pregunta, vamos a calcular la correlación de Pearson entre el número total de vuelos y la probabilidad de retraso de cada compañía.
correlation <- cor.test(datos_companias$prob_retraso, datos_companias$total_salidas,use="complete.obs" ,method = "pearson")
print(correlation)
##
## Pearson's product-moment correlation
##
## data: datos_companias$prob_retraso and datos_companias$total_salidas
## t = 1.5018, df = 19, p-value = 0.1496
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.1232670 0.6640585
## sample estimates:
## cor
## 0.3257541
Los resultados nos dan una correlación positiva moderada entre probabilidad de retraso y número de vuelos, lo que nos sugiere que en general, a medida que el número total de vuelos de una compañía aumenta, es probable que también aumente su probabilidad de experimentar retrasos. Sin embargo, es una correlación débil y además el p-valor, al ser mayor que 0,05, nos indica que no existe relación. No podemos afirmar que el número de vuelos influya, es por eso que se debe a otro tipo de factores.
Por ejemplo, lo podemos observar en el caso de Delta Air Lines INC., la segunda compañía con mayor número de vuelos pero en el ranking de probabilidad es la número 10.
También lo podemos ver con la compañía Hawaiian Air Lines, siendo la número 5 por la cola en el total de número de vuelos, pero la segunda con mayor probabilidad de retraso. Es por eso que existen excepciones con la afirmación de que cuando mayor número de vuelos, mayor probabilidad de retraso.
Vamos ahora a analizar estas cinco compañías: Hawaiian Airlines Inc., Delta Air Lines Inc., Southwest Airlines Co.,JetBlue Airways y Republic Airline, y vamos a ver cómo se comportan en cuanto número de vuelos por mes, probabilidad de retraso por mes, estudio de las causas de retraso etc.
Vamos a estudiar los vuelos por mes en general, para ver si hay alguna tendencia en el número de vuelos a lo largo del año. Además, hemos añadido los años 2022 y 2021 para hacer alguna comparación. Para ello, vamos a agrupar los datos por mes y año, calcular el número total de vuelos por mes y año, y luego visualizar los resultados en un gráfico de líneas. Vamos a visualizar la media diaria de número de vuelos por mes para cada uno de los años seleccionados. Utilizamos esta media para que el número de dias de cada mes no afecte a la comparación.
num_dias_mes <- c(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
# Función para generar la capa de datos para un año dado
data_layer <- function(df, year) {
# Agrupar los datos por mes para calcular estadísticas resumen
resumen <- df %>%
group_by(MONTH) %>%
dplyr::summarise(num_vuelos_totales = n()) # Contar el número total de vuelos por mes
# Unir el número de días al dataframe resumen
resumen <- resumen %>%
mutate(num_dias = num_dias_mes[as.integer(MONTH)]) # Agregar columna de número de días
# Calcular la media diaria de vuelos por mes
resumen <- resumen %>%
mutate(media_diaria = num_vuelos_totales / num_dias) # Calcular media diaria
# Devolver el dataframe resumen
return(resumen)
}
# Generar capas de datos para cada año
data_2021 <- data_layer(df_2021, 2021)
data_2022 <- data_layer(df_2022, 2022)
data_2023 <- data_layer(df, 2023)
# Crear el gráfico de líneas con la media diaria de vuelos por mes y año
ggplot() +
geom_line(data = data_2021, aes(x = factor(MONTH), y = media_diaria, color = "2021")) +
geom_point(data = data_2021, aes(x = factor(MONTH), y = media_diaria), color = "blue", size = 3) +
geom_line(data = data_2022, aes(x = factor(MONTH), y = media_diaria, color = "2022")) +
geom_point(data = data_2022, aes(x = factor(MONTH), y = media_diaria), color = "green", size = 3) +
geom_line(data = data_2023, aes(x = factor(MONTH), y = media_diaria, color = "2023")) +
geom_point(data = data_2023, aes(x = factor(MONTH), y = media_diaria), color = "red", size = 3) +
labs(title = "Media Diaria de Vuelos por Mes",
x = "Mes", y = "Media Diaria de Vuelos",
color = "Año") +
scale_x_discrete(labels = c("Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic")) +
scale_color_manual(values = c("2021" = "blue", "2022" = "green", "2023" = "red")) +
theme_minimal()
## `geom_line()`: Each group consists of only one observation.
## ℹ Do you need to adjust the group aesthetic?
## `geom_line()`: Each group consists of only one observation.
## ℹ Do you need to adjust the group aesthetic?
## `geom_line()`: Each group consists of only one observation.
## ℹ Do you need to adjust the group aesthetic?
En 2023, observamos que la distribución de vuelos sigue una subida
progresiva a lo largo del año, con un pico en agosto y un descenso en
septiembre. Sin embargo, en octubre se produce un aumento significativo
en el número de vuelos, llegando a ser el mes con más vuelos de 2023.
Luego vuelve a bajar como es de costumbre en los meses de invierno.
En 2022 vemos que la distribución es muy parecida a la de 2023, aunque
aquí llega al pico en junio y a partir de ahí baja.
En 2021 empieza
con muy pocos vuelos debido a la crisis del covid, pero como va
recuperando el número de vuelos a lo largo del año.
En general, se puede ver que la tendencia es la misma para todos los años. En los meses de invierno el número de vuelos es menor que en los meses de verano. Se puede ver una progresión ascendente en los datos. Podemos destacar también que este último año, se ha mantenido la media diaria de vuelos superior en los últimos meses mayor que en los años anteriores.
Ahora vamos a visualizar la media diaria de número de vuelos por mes para cada una de las compañías seleccionadas. Para ello, vamos a agrupar los datos por compañía y mes, calcular el número de vuelos por mes y luego visualizar los resultados en un gráfico de líneas.
También estudiaremos la media diaria de número de vuelos retrasados. Para ello, vamos a filtrar el conjunto de datos para incluir solo las observaciones con retrasos en la salida y luego visualizar los resultados en un gráfico de líneas. Lo más normal es que sigab la misma tendencia que las gráficas de media diaria de vuelos, pero vamos a ver si hay alguna excepción.
# Filtrar el conjunto de datos para incluir solo las observaciones con retrasos en la salida
df_con_retrasos <- df %>%
filter(DEP_DELAY > 0)
# Agrupar los datos por compañía y mes para calcular estadísticas resumen
resumen <- df %>%
group_by(NOMBRE_COMP, MONTH) %>%
dplyr::summarise(num_vuelos = n()) # Contar el número de vuelos por mes
## `summarise()` has grouped output by 'NOMBRE_COMP'. You can override using the
## `.groups` argument.
# Unir el número de días al dataframe resumen
resumen <- resumen %>%
mutate(num_dias = num_dias_mes[as.integer(MONTH)]) # Agregar columna de número de días
# Calcular la media diaria de vuelos por mes
resumen <- resumen %>%
mutate(media_diaria = num_vuelos / num_dias) # Calcular media diaria
# Visualizar los datos de una compañía específica (por ejemplo, 'Hawaiian Airlines Inc.') en un gráfico de líneas
compania_seleccionada <- 'Southwest Airlines Co.'
datos_compania2 <- resumen %>%
filter(NOMBRE_COMP == compania_seleccionada)
# Crear el gráfico de líneas con la media diaria de vuelos por mes
ggplot(datos_compania2, aes(x = factor(MONTH), y = media_diaria, group = 1)) +
geom_line(color = "skyblue") +
geom_point(color = "blue", size = 3) +
labs(title = paste("Media Diaria de Vuelos por Mes para", compania_seleccionada),
x = "Mes", y = "Media Diaria de Vuelos") +
scale_x_discrete(labels = c("Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic")) +
theme_minimal()
Se observa que la compañía Southwest Airlines Co. aumenta el número de vuelos de manera signficativa con el paso de los meses. Se puede ver el primer pico en el mes de julio, demostrando que los meses de verano son los que más vuelos tienen en EEUU, como podemos ver en el estudio general para todas las compañías. No obstante, hay otro pico en octubre más significativo que el de julio,y los siguientes meses a este tienen un gran número de vuelos. Investigando el porqué, encontramos una notícia indicando la compra de más aviones por parte de la compañía con más peso en EEUU, Southwest Airlines Co. en octubre de 2023, lo que explicaría el aumento de vuelos en los meses siguientes. Siendo esta compañía la que más vuelos tiene en EEUU, es normal que el aumento de vuelos también influya a la gráfica general, como hemos visto anteriormente.
# Agrupar los datos por compañía y mes para calcular estadísticas resumen
resumen <- df_con_retrasos %>%
group_by(NOMBRE_COMP, MONTH) %>%
dplyr::summarise(num_vuelos = n()) # Contar el número de vuelos por mes
## `summarise()` has grouped output by 'NOMBRE_COMP'. You can override using the
## `.groups` argument.
# Unir el número de días al dataframe resumen
resumen <- resumen %>%
mutate(num_dias = num_dias_mes[as.integer(MONTH)]) # Agregar columna de número de días
# Calcular la media diaria de vuelos por mes
resumen <- resumen %>%
mutate(media_diaria = num_vuelos / num_dias) # Calcular media diaria
compania_seleccionada <- 'Southwest Airlines Co.'
datos_compania2 <- resumen %>%
filter(NOMBRE_COMP == compania_seleccionada)
# Crear el gráfico de líneas con la media diaria de vuelos por mes
ggplot(datos_compania2, aes(x = factor(MONTH), y = media_diaria, group = 1)) +
geom_line(color = "skyblue") +
geom_point(color = "blue", size = 3) +
labs(title = paste("Media Diaria de Vuelos Retrasados por Mes para", compania_seleccionada),
x = "Mes", y = "Media Diaria de Vuelos") +
scale_x_discrete(labels = c("Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic")) +
theme_minimal()
El número de vuelos retrasados aumenta en verano, pero desciende bastante después de verano, siendo inversamente proporcional al número de vuelos, por lo que confirmamos una mejora en cuanto a la probabilidad de retraso en los últimos meses del año para esta compañía, ya que se ha visto reducida.
resumen <- df %>%
group_by(NOMBRE_COMP, MONTH) %>%
dplyr::summarise(num_vuelos = n()) # Contar el número de vuelos por mes
## `summarise()` has grouped output by 'NOMBRE_COMP'. You can override using the
## `.groups` argument.
resumen <- resumen %>%
mutate(num_dias = num_dias_mes[as.integer(MONTH)]) # Agregar columna de número de días
resumen <- resumen %>%
mutate(media_diaria = num_vuelos / num_dias) # Calcular media diaria
compania_seleccionada <- 'Delta Air Lines Inc.'
datos_compania2 <- resumen %>%
filter(NOMBRE_COMP == compania_seleccionada)
ggplot(datos_compania2, aes(x = factor(MONTH), y = media_diaria, group = 1)) +
geom_line(color = "skyblue") +
geom_point(color = "blue", size = 3) +
labs(title = paste("Media Diaria de Vuelos por Mes para", compania_seleccionada),
x = "Mes", y = "Media Diaria de Vuelos") +
scale_x_discrete(labels = c("Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic")) +
theme_minimal()
Delta Air Lines Inc. tiene un comportamiento bastante parecido a a Southwest Airlines Co. en cuanto al número de vuelos por mes, aunque se ve un cambio en los últimos meses, ya que esta compañía no aumenta también, sino que vuelve a bajar. Delta Air Lines aumenta bastante en los meses de verano y disminuye en los meses de invierno el número de vuelos.
resumen <- df_con_retrasos %>%
group_by(NOMBRE_COMP, MONTH) %>%
dplyr::summarise(num_vuelos = n())
## `summarise()` has grouped output by 'NOMBRE_COMP'. You can override using the
## `.groups` argument.
resumen <- resumen %>%
mutate(num_dias = num_dias_mes[as.integer(MONTH)])
resumen <- resumen %>%
mutate(media_diaria = num_vuelos / num_dias)
compania_seleccionada <- 'Delta Air Lines Inc.'
datos_compania2 <- resumen %>%
filter(NOMBRE_COMP == compania_seleccionada)
ggplot(datos_compania2, aes(x = factor(MONTH), y = media_diaria, group = 1)) +
geom_line(color = "skyblue") +
geom_point(color = "blue", size = 3) +
labs(title = paste("Media Diaria de Vuelos Retrasados por Mes para", compania_seleccionada),
x = "Mes", y = "Media Diaria de Vuelos") +
scale_x_discrete(labels = c("Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic")) +
theme_minimal()
La distribución de vuelos retrasados es más rara. Tienen un pico alto en junio y julio, pero tienen una gran bajada en los últimos meses del año, demostrando que ellos también reducen su probabilidad de retraso al final del año 2023.
resumen <- df %>%
group_by(NOMBRE_COMP, MONTH) %>%
dplyr::summarise(num_vuelos = n())
## `summarise()` has grouped output by 'NOMBRE_COMP'. You can override using the
## `.groups` argument.
resumen <- resumen %>%
mutate(num_dias = num_dias_mes[as.integer(MONTH)])
resumen <- resumen %>%
mutate(media_diaria = num_vuelos / num_dias)
compania_seleccionada <- 'Hawaiian Airlines Inc.'
datos_compania2 <- resumen %>%
filter(NOMBRE_COMP == compania_seleccionada)
ggplot(datos_compania2, aes(x = factor(MONTH), y = media_diaria, group = 1)) +
geom_line(color = "skyblue") +
geom_point(color = "blue", size = 3) +
labs(title = paste("Media Diaria de Vuelos por Mes para", compania_seleccionada),
x = "Mes", y = "Media Diaria de Vuelos") +
scale_x_discrete(labels = c("Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic")) +
theme_minimal()
Hawaiian Airlines Inc. se trata de una compañía mucho más pequeña que las dos anteriores, ya que solo trabaja con aeropuertos de Hawaii y sus correspondientes destinos de Estados Unidos. Sin embargo, podemos ver y afirmar que también tiene un comportamiento parecido a las dos anteriores, aumentando el número de vuelos en los meses de verano y disminuyendo en los meses de invierno.
resumen <- df_con_retrasos %>%
group_by(NOMBRE_COMP, MONTH) %>%
dplyr::summarise(num_vuelos = n())
## `summarise()` has grouped output by 'NOMBRE_COMP'. You can override using the
## `.groups` argument.
resumen <- resumen %>%
mutate(num_dias = num_dias_mes[as.integer(MONTH)])
# Calcular la media diaria de vuelos por mes
resumen <- resumen %>%
mutate(media_diaria = num_vuelos / num_dias)
compania_seleccionada <- 'Hawaiian Airlines Inc.'
datos_compania2 <- resumen %>%
filter(NOMBRE_COMP == compania_seleccionada)
ggplot(datos_compania2, aes(x = factor(MONTH), y = media_diaria, group = 1)) +
geom_line(color = "skyblue") +
geom_point(color = "blue", size = 3) +
labs(title = paste("Media Diaria de Vuelos Retrasados por Mes para", compania_seleccionada),
x = "Mes", y = "Media Diaria de Vuelos") +
scale_x_discrete(labels = c("Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic")) +
theme_minimal()
Recordamos que esta compañía aumentaba el número de vuelos en los meses de verano. Sin embargo, en este gráfico vemos como en esos meses los vuelos retrasados disminuyen bastante en comparación con los anteriores. Podemos afirmar por tanto que durante este año la compañía ha mejorado en cuanto a retrasos en los vuelos y durante su período con más trabajo ha sabido manejar los retrasos.
# Agrupar los datos por compañía y mes para calcular estadísticas resumen
resumen <- df %>%
group_by(NOMBRE_COMP, MONTH) %>%
dplyr::summarise(num_vuelos = n()) # Contar el número de vuelos por mes
## `summarise()` has grouped output by 'NOMBRE_COMP'. You can override using the
## `.groups` argument.
# Unir el número de días al dataframe resumen
resumen <- resumen %>%
mutate(num_dias = num_dias_mes[as.integer(MONTH)]) # Agregar columna de número de días
# Calcular la media diaria de vuelos por mes
resumen <- resumen %>%
mutate(media_diaria = num_vuelos / num_dias) # Calcular media diaria
compania_seleccionada <- 'JetBlue Airways'
datos_compania2 <- resumen %>%
filter(NOMBRE_COMP == compania_seleccionada)
# Crear el gráfico de líneas con la media diaria de vuelos por mes
ggplot(datos_compania2, aes(x = factor(MONTH), y = media_diaria, group = 1)) +
geom_line(color = "skyblue") +
geom_point(color = "blue", size = 3) +
labs(title = paste("Media Diaria de Vuelos por Mes para", compania_seleccionada),
x = "Mes", y = "Media Diaria de Vuelos") +
scale_x_discrete(labels = c("Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic")) +
theme_minimal()
Podemos observar que JetBlue Airways tiene un comportamiento diferente a las compañías anteriores. Parecía qie iba a aumentar como las demás pero en los meses de verano baja el número de vuelos de forma pronunciada, actuando de forma inversa a las compañías estudiadas anteriormente y a todas las compañías en general. Investigando esto nos damos cuenta que se reducen los vuelos en verano debido a la falta de personal en el estado de Nueva York, que es uno de los estados donde más operaba esta aerolínea.
# Agrupar los datos por compañía y mes para calcular estadísticas resumen
resumen <- df_con_retrasos %>%
group_by(NOMBRE_COMP, MONTH) %>%
dplyr::summarise(num_vuelos = n()) # Contar el número de vuelos por mes
## `summarise()` has grouped output by 'NOMBRE_COMP'. You can override using the
## `.groups` argument.
# Unir el número de días al dataframe resumen
resumen <- resumen %>%
mutate(num_dias = num_dias_mes[as.integer(MONTH)]) # Agregar columna de número de días
# Calcular la media diaria de vuelos por mes
resumen <- resumen %>%
mutate(media_diaria = num_vuelos / num_dias) # Calcular media diaria
compania_seleccionada <- 'JetBlue Airways'
datos_compania2 <- resumen %>%
filter(NOMBRE_COMP == compania_seleccionada)
# Crear el gráfico de líneas con la media diaria de vuelos por mes
ggplot(datos_compania2, aes(x = factor(MONTH), y = media_diaria, group = 1)) +
geom_line(color = "skyblue") +
geom_point(color = "blue", size = 3) +
labs(title = paste("Media Diaria de Vuelos Retrasados por Mes para", compania_seleccionada),
x = "Mes", y = "Media Diaria de Vuelos") +
scale_x_discrete(labels = c("Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic")) +
theme_minimal()
En cuanto a los vuelos retrasados, JetBlue Airways también tiene un comportamiento diferente a las compañías anteriores. Aunque en verano baja el número de vuelos, los vuelos retrasados aumentan en verano, lo que nos hace pensar que la falta de personal en Nueva York también ha afectado a la puntualidad de los vuelos.
# Agrupar los datos por compañía y mes para calcular estadísticas resumen
resumen <- df %>%
group_by(NOMBRE_COMP, MONTH) %>%
dplyr::summarise(num_vuelos = n()) # Contar el número de vuelos por mes
## `summarise()` has grouped output by 'NOMBRE_COMP'. You can override using the
## `.groups` argument.
# Unir el número de días al dataframe resumen
resumen <- resumen %>%
mutate(num_dias = num_dias_mes[as.integer(MONTH)]) # Agregar columna de número de días
# Calcular la media diaria de vuelos por mes
resumen <- resumen %>%
mutate(media_diaria = num_vuelos / num_dias) # Calcular media diaria
compania_seleccionada <- 'Republic Airline'
datos_compania2 <- resumen %>%
filter(NOMBRE_COMP == compania_seleccionada)
# Crear el gráfico de líneas con la media diaria de vuelos por mes
ggplot(datos_compania2, aes(x = factor(MONTH), y = media_diaria, group = 1)) +
geom_line(color = "skyblue") +
geom_point(color = "blue", size = 3) +
labs(title = paste("Media Diaria de Vuelos por Mes para", compania_seleccionada),
x = "Mes", y = "Media Diaria de Vuelos") +
scale_x_discrete(labels = c("Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic")) +
theme_minimal()
Republic Airline tiene un comportamiento parecido a JetBlue Airways, lo que le hace ser distinto a la mayoría. Baja en los últimos meses del año y en verano.
# Agrupar los datos por compañía y mes para calcular estadísticas resumen
resumen <- df_con_retrasos %>%
group_by(NOMBRE_COMP, MONTH) %>%
dplyr::summarise(num_vuelos = n()) # Contar el número de vuelos por mes
## `summarise()` has grouped output by 'NOMBRE_COMP'. You can override using the
## `.groups` argument.
# Unir el número de días al dataframe resumen
resumen <- resumen %>%
mutate(num_dias = num_dias_mes[as.integer(MONTH)]) # Agregar columna de número de días
# Calcular la media diaria de vuelos por mes
resumen <- resumen %>%
mutate(media_diaria = num_vuelos / num_dias) # Calcular media diaria
compania_seleccionada <- 'Republic Airline'
datos_compania2 <- resumen %>%
filter(NOMBRE_COMP == compania_seleccionada)
# Crear el gráfico de líneas con la media diaria de vuelos por mes
ggplot(datos_compania2, aes(x = factor(MONTH), y = media_diaria, group = 1)) +
geom_line(color = "skyblue") +
geom_point(color = "blue", size = 3) +
labs(title = paste("Media Diaria de Vuelos Retrasados por Mes para", compania_seleccionada),
x = "Mes", y = "Media Diaria de Vuelos") +
scale_x_discrete(labels = c("Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic")) +
theme_minimal()
Crearemos un nuevo dataframe llamado causas_retraso, con solo aquellos vuelos donde la variables de causa no son NA y son mayores que 0. Luego, crearemos un gráfico de barras para visualizar la frecuencia de cada causa de retraso en general.
causas_retraso <- df %>%
dplyr::summarise(
CARRIER_DELAY = sum(!is.na(CARRIER_DELAY) & CARRIER_DELAY > 0),
WEATHER_DELAY = sum(!is.na(WEATHER_DELAY) & WEATHER_DELAY > 0),
NAS_DELAY = sum(!is.na(NAS_DELAY) & NAS_DELAY > 0),
SECURITY_DELAY = sum(!is.na(SECURITY_DELAY) & SECURITY_DELAY > 0),
LATE_AIRCRAFT_DELAY = sum(!is.na(LATE_AIRCRAFT_DELAY) & LATE_AIRCRAFT_DELAY > 0)
)
causas_retraso_long <- causas_retraso %>%
pivot_longer(everything(), names_to = "causa", values_to = "frecuencia")
# Gráfico de barras
ggplot(causas_retraso_long, aes(x = causa, y = frecuencia)) +
geom_bar(stat = "identity", fill = "skyblue") +
labs(title = "Frecuencia de Cada Causa de Retraso en General",
x = "Causa de Retraso", y = "Frecuencia") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Realizando un estudio de las causas de retraso más frecuentes en todas las compañías, observamos que existen tres grandes motivos, que son Carrier_delay(retraso de la compañía), Late_Aircraft_delay(retraso del avión) y NAS_delay(retraso del sistema nacional de aviación). Estos tres motivos son los más frecuentes en todas las compañías, lo que nos indica que son los más comunes en la aviación de Estados Unidos. Retrasos por causas meteorológicas y de seguridad son mucho menos frecuentes, lo que nos indica que la aviación en Estados Unidos es bastante segura y que los retrasos no suelen ser por causas meteorológicas, lo que es un punto a favor para la aviación en este país.
Vamos a realizar lo mismo que antes pero vamos a filtrar por las compañías que tenemos.
companias <- c("Southwest Airlines Co.")
df_filtrado <- df %>%
filter(NOMBRE_COMP %in% companias)
# crear el nuevo dataframe con las causas de retraso
causas_retraso <- df_filtrado %>%
dplyr::summarise(
CARRIER_DELAY = sum(!is.na(CARRIER_DELAY) & CARRIER_DELAY > 0),
WEATHER_DELAY = sum(!is.na(WEATHER_DELAY) & WEATHER_DELAY > 0),
NAS_DELAY = sum(!is.na(NAS_DELAY) & NAS_DELAY > 0),
SECURITY_DELAY = sum(!is.na(SECURITY_DELAY) & SECURITY_DELAY > 0),
LATE_AIRCRAFT_DELAY = sum(!is.na(LATE_AIRCRAFT_DELAY) & LATE_AIRCRAFT_DELAY > 0)
)
causas_retraso_long <- causas_retraso %>%
pivot_longer(everything(), names_to = "causa", values_to = "frecuencia")
# Crear el gráfico de barras
ggplot(causas_retraso_long, aes(x = causa, y = frecuencia)) +
geom_bar(stat = "identity", fill = "skyblue") +
labs(title = "Frecuencia de Cada Causa de Retraso - Southwest Airlines Co.",
x = "Causa de Retraso", y = "Frecuencia") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Southwest Airlines Co. tiene como causa de retraso más frecuente la llegadad tardía de un avión. Eso provoca que el siguiente se retrase. La segunda causa más frecuente es el retraso de la compañía, lo que nos indica que la compañía tiene problemas propios que le hacen retrasarse. En tercer lugar, con altos valores también se encuentra el retraso del sistema nacional de aviación.
companias <- c("Delta Air Lines Inc.")
df_filtrado <- df %>%
filter(NOMBRE_COMP %in% companias)
causas_retraso <- df_filtrado %>%
dplyr::summarise(
CARRIER_DELAY = sum(!is.na(CARRIER_DELAY) & CARRIER_DELAY > 0),
WEATHER_DELAY = sum(!is.na(WEATHER_DELAY) & WEATHER_DELAY > 0),
NAS_DELAY = sum(!is.na(NAS_DELAY) & NAS_DELAY > 0),
SECURITY_DELAY = sum(!is.na(SECURITY_DELAY) & SECURITY_DELAY > 0),
LATE_AIRCRAFT_DELAY = sum(!is.na(LATE_AIRCRAFT_DELAY) & LATE_AIRCRAFT_DELAY > 0)
)
causas_retraso_long <- causas_retraso %>%
pivot_longer(everything(), names_to = "causa", values_to = "frecuencia")
# Gráfico de barras
ggplot(causas_retraso_long, aes(x = causa, y = frecuencia)) +
geom_bar(stat = "identity", fill = "skyblue") +
labs(title = "Frecuencia de Cada Causa de Retraso - Delta Air Lines Inc.",
x = "Causa de Retraso", y = "Frecuencia") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
La causa de retraso más frecuente en Delta Air Lines Inc. es el retraso de la operadora, seguido del retraso del sistema nacional de aviación. Esto nos indica que la compañía Delta Air Lines Inc. sigue la misma distribución que la mayoría de compañías, siendo sus problemas propios los que más retrasos causan.
companias <- c("Hawaiian Airlines Inc.")
df_filtrado <- df %>%
filter(NOMBRE_COMP %in% companias)
causas_retraso <- df_filtrado %>%
dplyr::summarise(
CARRIER_DELAY = sum(!is.na(CARRIER_DELAY) & CARRIER_DELAY > 0),
WEATHER_DELAY = sum(!is.na(WEATHER_DELAY) & WEATHER_DELAY > 0),
NAS_DELAY = sum(!is.na(NAS_DELAY) & NAS_DELAY > 0),
SECURITY_DELAY = sum(!is.na(SECURITY_DELAY) & SECURITY_DELAY > 0),
LATE_AIRCRAFT_DELAY = sum(!is.na(LATE_AIRCRAFT_DELAY) & LATE_AIRCRAFT_DELAY > 0)
)
causas_retraso_long <- causas_retraso %>%
pivot_longer(everything(), names_to = "causa", values_to = "frecuencia")
# Crear el gráfico de barras
ggplot(causas_retraso_long, aes(x = causa, y = frecuencia)) +
geom_bar(stat = "identity", fill = "skyblue") +
labs(title = "Frecuencia de Cada Causa de Retraso - Hawaiian Airlines Inc.",
x = "Causa de Retraso", y = "Frecuencia") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Hawaiian Airlines Inc. tiene como causa de retraso más frecuente el retraso de la operadora. En segundo se encuentra el retraso por aviones tardíos. En tercer lugar, con valores bastante bajos comparado con el resto ya se encuentra NAS_DELAY.
companias <- c("JetBlue Airways")
df_filtrado <- df %>%
filter(NOMBRE_COMP %in% companias)
causas_retraso <- df_filtrado %>%
dplyr::summarise(
CARRIER_DELAY = sum(!is.na(CARRIER_DELAY) & CARRIER_DELAY > 0),
WEATHER_DELAY = sum(!is.na(WEATHER_DELAY) & WEATHER_DELAY > 0),
NAS_DELAY = sum(!is.na(NAS_DELAY) & NAS_DELAY > 0),
SECURITY_DELAY = sum(!is.na(SECURITY_DELAY) & SECURITY_DELAY > 0),
LATE_AIRCRAFT_DELAY = sum(!is.na(LATE_AIRCRAFT_DELAY) & LATE_AIRCRAFT_DELAY > 0)
)
causas_retraso_long <- causas_retraso %>%
pivot_longer(everything(), names_to = "causa", values_to = "frecuencia")
# Crear el gráfico de barras
ggplot(causas_retraso_long, aes(x = causa, y = frecuencia)) +
geom_bar(stat = "identity", fill = "skyblue") +
labs(title = "Frecuencia de Cada Causa de Retraso - JetBlue Airways.",
x = "Causa de Retraso", y = "Frecuencia") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
JetBlue Airways tiene como causa de retraso más frecuente el retraso de la operadora. En segundo lugar se encuentra el retraso por aviones tardíos. En tercer lugar, NAS_DELAY. Sabemos que es una de las peores operadoras en cuanto a retrasos, y podemos afirmar que la mayoría de las veces es por su culpa.
# Especifica las compañías que deseas incluir en el análisis
companias <- c("Republic Airline")
# Filtra los datos por las compañías seleccionadas
df_filtrado <- df %>%
filter(NOMBRE_COMP %in% companias)
# Calcular la frecuencia de cada causa de retraso para las compañías seleccionadas
causas_retraso <- df_filtrado %>%
dplyr::summarise(
CARRIER_DELAY = sum(!is.na(CARRIER_DELAY) & CARRIER_DELAY > 0),
WEATHER_DELAY = sum(!is.na(WEATHER_DELAY) & WEATHER_DELAY > 0),
NAS_DELAY = sum(!is.na(NAS_DELAY) & NAS_DELAY > 0),
SECURITY_DELAY = sum(!is.na(SECURITY_DELAY) & SECURITY_DELAY > 0),
LATE_AIRCRAFT_DELAY = sum(!is.na(LATE_AIRCRAFT_DELAY) & LATE_AIRCRAFT_DELAY > 0)
)
causas_retraso_long <- causas_retraso %>%
pivot_longer(everything(), names_to = "causa", values_to = "frecuencia")
# Convertir los datos a un formato adecuado para ggplot
causas_retraso_long <- causas_retraso %>%
pivot_longer(everything(), names_to = "causa", values_to = "frecuencia")
# Crear el gráfico de barras
ggplot(causas_retraso_long, aes(x = causa, y = frecuencia)) +
geom_bar(stat = "identity", fill = "skyblue") +
labs(title = "Frecuencia de Cada Causa de Retraso - Repubic Airline.",
x = "Causa de Retraso", y = "Frecuencia") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
En este compañía encontramos unos datos bastante diferentes a los anteriormente vistos. La causa de retraso más frecuente es el retraso del Sistema Aéreo Nacional. Como hemos visto anteriormente, esta compañía era de las que mejor índice de rendimiento tenía en nuestra base de datos en lo referente a los retrasos. Es por eso que es la única compañía que hemos estudiado donde la causa de retraso por culpa de la compañía no es la primera o la segunda más frecuente, sino que es la tercera.
# Dataframe con la media de minutos para cada causa de retraso para todas las compañías
medias_por_compania <- df %>%
group_by(NOMBRE_COMP) %>%
dplyr::summarise(
CARRIER_DELAY_mean = mean(CARRIER_DELAY[CARRIER_DELAY>0], na.rm = TRUE),
WEATHER_DELAY_mean = mean(WEATHER_DELAY[WEATHER_DELAY>0], na.rm = TRUE),
NAS_DELAY_mean = mean(NAS_DELAY[NAS_DELAY>0], na.rm = TRUE),
SECURITY_DELAY_mean = mean(SECURITY_DELAY[SECURITY_DELAY>0], na.rm = TRUE),
LATE_AIRCRAFT_DELAY_mean = mean(LATE_AIRCRAFT_DELAY[LATE_AIRCRAFT_DELAY>0], na.rm = TRUE)
)
#filtrar por compañías
companias <- c("Delta Air Lines Inc.", "Southwest Airlines Co.", "Hawaiian Airlines Inc.","JetBlue Airways","Republic Airline")
medias_por_compania <- medias_por_compania %>%
filter(NOMBRE_COMP %in% companias)
# Convierte los datos a un formato adecuado para ggplot
medias_por_compania_long <- medias_por_compania %>%
pivot_longer(cols = -NOMBRE_COMP,
names_to = "causa", values_to = "media_minutos")
#gráfico de barras para cada causa de retraso diferente con las medias de minutos de retraso por causa para todas las compañías
ggplot(medias_por_compania_long, aes(x = NOMBRE_COMP, y = media_minutos, fill = causa)) +
geom_bar(stat = "identity", position = "dodge") +
labs(title = "Media de Minutos de Retraso por Causa y Compañía",
x = "Compañía", y = "Media de Minutos de Retraso",
fill = "Causa de Retraso") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
En este gráfico podemos observar que en general, el retraso que más minutos de media provoca es el provocado por la metereología. Sin embargo, como hemos visto antes, es uno de los menos frecuentes. En segundo lugar,el retraso por llegada tardía de avión es el que más minutos hace esperar en general. En tercer lugar la causa de retraso con mayor media de minutos de retrasos son los problemas de la operadora. Podríamos decir que estas son las tres peores cosas que te pueden ocurrir si se retrasa tu avión, ya que son las que más tiempo te hacen esperar. Por otra parte estaría el retraso del sistema nacional de aviación y el retraso de seguridad, que aunque la media roze los 20 minutos,son los menos alargados comparando con los demás.
Ahora, observaremos un gráfico que muestra como ha variado la probabilidad de retraso en función del mes para cada compañía aérea.
companias_seleccionadas <- c("Delta Air Lines Inc.", "Southwest Airlines Co.", "Hawaiian Airlines Inc.","JetBlue Airways","Republic Airline")
df_filtrado <- df %>%
filter(NOMBRE_COMP %in% companias_seleccionadas)
probabilidad_retraso <- df_filtrado %>%
group_by(NOMBRE_COMP, MONTH) %>%
dplyr::summarise(probabilidad_retraso = mean(salida_retraso > 0))
## `summarise()` has grouped output by 'NOMBRE_COMP'. You can override using the
## `.groups` argument.
probabilidad_retraso$MONTH <- factor(probabilidad_retraso$MONTH, levels = unique(probabilidad_retraso$MONTH))
ggplot(probabilidad_retraso, aes(x = MONTH, y = probabilidad_retraso, group = NOMBRE_COMP, color = NOMBRE_COMP)) +
geom_line() +
labs(title = "Probabilidad de Retraso por Compañía Aérea",
x = "Mes", y = "Probabilidad de Retraso") +
theme_minimal()
En este gráfico podemos observar la probabilidad de retraso por compañía aérea. Lo más visual es que no existe ninguna compañía que se mantenga constante durante todo el año. Esto nos indica que puede variar en función del mes y que podria variar por diversos motivos, como podría ser el caso de festividades, vacaciones, etc.
También podemos destacar que no existe ningún patrón general para todas las compañías. Cada una tiene sus picos en un mes diferente. Se pueden parecer un poco, como el caso de Delta Air Lines Inc. y Republic Airline, que parece que sigan una distribución parecida, pero en general, no existe un patrón para todas las compañías.
Otra opción es que la compañía mejore su rendimiento en función del mes. Por ejemplo, como hemos comentado antes, la compañía Hawaiian tiene la mayoría de vuelos en verano. Hemos observaddo anteriormente como aunque subiera la media diaria de vuelos en los meses de verano para esta compañía, disminuyían los vuelos con retraso. Aquí podemos ver como su probabilidad de retraso también disminuye en los meses de verano.
Este gráfico demuestra también la calidad de las compañías, viendo como Republic Airline sigue siendo la mejor opción de entre todas ellas.
Ahora crearemos un nuevo dataset para estudiar con un mapa de calor el número de vuelos por estado para cada compañía seleccionada.
vuelos_por_estado <- df %>%
group_by(NOMBRE_COMP, ORIGIN_STATE_NM) %>%
dplyr::summarise(num_vuelos = n())
## `summarise()` has grouped output by 'NOMBRE_COMP'. You can override using the
## `.groups` argument.
eeuu=st_read("C:/Users/carle/Desktop/Ciencia de datos/SEGUNDO/2n Cuatri/ProyII/Estados_Unidos_Estados.shp")
## Reading layer `Estados_Unidos_Estados' from data source
## `C:\Users\carle\Desktop\Ciencia de datos\SEGUNDO\2n Cuatri\ProyII\Estados_Unidos_Estados.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 51 features and 3 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: -178.2176 ymin: 18.92478 xmax: -66.96927 ymax: 71.40624
## Geodetic CRS: WGS 84
Una vez creado el dataset, vamos a estudiar la distribución de vuelos por estado para cada compañía seleccionada. Utilizaremos el mismo código para cada compañía, cambiando el nombre de la compañía en cada caso. Para la visualización, utilizaremos un mapa de calor que muestre el número de vuelos por estado. Realizaremos este mapa gracias a las librerias de tmap y sf.
compania_seleccionada <- 'Southwest Airlines Co.'
datos_compania_mapa <- vuelos_por_estado %>%
filter(NOMBRE_COMP == compania_seleccionada)
names(eeuu)[names(eeuu) == "STATE_NAME"] <- "Estado"
names(datos_compania_mapa)[names(datos_compania_mapa) == "ORIGIN_STATE_NM"] <- "Estado"
shp_eeuu_Delta=merge(datos_compania_mapa,eeuu,by="Estado")
shp_eeuu_sf_Delta <- st_as_sf(shp_eeuu_Delta)
tmap_mode("view")
## tmap mode set to interactive viewing
tm_shape(shp_eeuu_sf_Delta)+
tm_fill("num_vuelos",ID="Estado", palette="Reds", style="quantile",n=10, title=paste("Vuelos totales de",compania_seleccionada))+
tm_borders("grey25",alpha=0.5)+
tm_layout(title=paste("Número de vuelos de",compania_seleccionada, " por estado"), main.title.position = "center")+
tm_view(view.legend.position = c("left","bottom"))
Texas destaca con la mayor cantidad de vuelos, lo cual es lógico ya que Dallas es uno de los principales hubs de Southwest. Estados como California, Florida y Arizona también tienen una alta cantidad de vuelos, reflejando sus importantes aeropuertos y conexiones de Southwest. En contraste, estados como Dakota del Norte, Montana y Maine tienen significativamente menos vuelos. Hay una mayor densidad de vuelos en estados del sur y suroeste en comparación con el medio oeste y algunas áreas del noreste.
compania_seleccionada <- 'Delta Air Lines Inc.'
datos_compania_Delta <- vuelos_por_estado %>%
filter(NOMBRE_COMP == compania_seleccionada)
names(eeuu)[names(eeuu) == "STATE_NAME"] <- "Estado"
names(datos_compania_Delta)[names(datos_compania_Delta) == "ORIGIN_STATE_NM"] <- "Estado"
shp_eeuu_Delta=merge(datos_compania_Delta,eeuu,by="Estado")
shp_eeuu_sf_Delta <- st_as_sf(shp_eeuu_Delta)
tmap_mode("view")
## tmap mode set to interactive viewing
tm_shape(shp_eeuu_sf_Delta)+
tm_fill("num_vuelos",ID="Estado", palette="Reds", style="quantile",n=10, title="Vuelos totales de Delta Air Lines")+
tm_borders("grey25",alpha=0.5)+
tm_layout("Número de vuelos de Delta Air Lines por", main.title.position = "center")+
tm_view(view.legend.position = c("left","bottom"))
De la imagen, podemos destacar lo siguiente: Georgia destaca con la mayor cantidad de vuelos, lo cual es lógico ya que Atlanta es el principal hub de Delta. Estados como California, Minnesota y Nueva York también tienen una alta cantidad de vuelos, reflejando sus importantes aeropuertos y conexiones de Delta. En contraste, estados como Dakota del Norte, Vermont y Alaska tienen significativamente menos vuelos. Hay una mayor densidad de vuelos en estados del sur y noreste en comparación con el medio oeste y algunas áreas del oeste. La distribución de vuelos refleja la ubicación de los principales hubs de Delta y las rutas más populares. Estados con grandes centros urbanos y turísticos muestran una mayor actividad de vuelos.
compania_seleccionada <- 'Hawaiian Airlines Inc.'
datos_compania_mapa <- vuelos_por_estado %>%
filter(NOMBRE_COMP == compania_seleccionada)
names(eeuu)[names(eeuu) == "STATE_NAME"] <- "Estado"
names(datos_compania_mapa)[names(datos_compania_mapa) == "ORIGIN_STATE_NM"] <- "Estado"
shp_eeuu_Delta=merge(datos_compania_mapa,eeuu,by="Estado")
shp_eeuu_sf_Delta <- st_as_sf(shp_eeuu_Delta)
tmap_mode("view")
## tmap mode set to interactive viewing
tm_shape(shp_eeuu_sf_Delta)+
tm_fill("num_vuelos",ID="Estado", palette="Reds", style="quantile",n=10, title=paste("Vuelos totales de",compania_seleccionada))+
tm_borders("grey25",alpha=0.5)+
tm_layout(title=paste("Número de vuelos de",compania_seleccionada, " por estado"), main.title.position = "center")+
tm_view(view.legend.position = c("left","bottom"))
La compañía Hawaiian Airlines Inc. trabaja siempre en Hawaii, como origen o destino. Los diferentes estados que visita con poca proporción son Texas, Nueva York, Washingthon, Massachusetts y pocos más. Es decir, los estados costeros más importantes de Estados Unidos.
compania_seleccionada <- 'JetBlue Airways'
datos_compania_mapa <- vuelos_por_estado %>%
filter(NOMBRE_COMP == compania_seleccionada)
names(eeuu)[names(eeuu) == "STATE_NAME"] <- "Estado"
names(datos_compania_mapa)[names(datos_compania_mapa) == "ORIGIN_STATE_NM"] <- "Estado"
shp_eeuu_Delta=merge(datos_compania_mapa,eeuu,by="Estado")
shp_eeuu_sf_Delta <- st_as_sf(shp_eeuu_Delta)
tmap_mode("view")
## tmap mode set to interactive viewing
tm_shape(shp_eeuu_sf_Delta)+
tm_fill("num_vuelos",ID="Estado", palette="Reds", style="quantile",n=10, title=paste("Vuelos totales de",compania_seleccionada))+
tm_borders("grey25",alpha=0.5)+
tm_layout(title=paste("Número de vuelos de",compania_seleccionada, " por estado"), main.title.position = "center")+
tm_view(view.legend.position = c("left","bottom"))
Las regiones con más vuelos de JetBlue son el noreste, el sureste y el oeste. Nueva York y Massachusetts en el noreste, así como Florida en el sureste, destacan por su alta densidad de vuelos. California en el oeste también muestra una considerable cantidad de vuelos. En contraste, las regiones con menos vuelos de JetBlue son el medio oeste y el norte, con estados como Montana, Dakota del Norte y Wyoming teniendo significativamente menos vuelos.
compania_seleccionada <- 'Republic Airline'
datos_compania_mapa <- vuelos_por_estado %>%
filter(NOMBRE_COMP == compania_seleccionada)
names(eeuu)[names(eeuu) == "STATE_NAME"] <- "Estado"
names(datos_compania_mapa)[names(datos_compania_mapa) == "ORIGIN_STATE_NM"] <- "Estado"
shp_eeuu_Delta=merge(datos_compania_mapa,eeuu,by="Estado")
shp_eeuu_sf_Delta <- st_as_sf(shp_eeuu_Delta)
tmap_mode("view")
## tmap mode set to interactive viewing
tm_shape(shp_eeuu_sf_Delta)+
tm_fill("num_vuelos",ID="Estado", palette="Reds", style="quantile",n=10, title=paste("Vuelos totales de",compania_seleccionada))+
tm_borders("grey25",alpha=0.5)+
tm_layout(title=paste("Número de vuelos de",compania_seleccionada, " por estado"), main.title.position = "center")+
tm_view(view.legend.position = c("left","bottom"))
Las regiones con más vuelos de Republic Airline se encuentran en el noreste, el medio oeste y el sureste. Estados como Nueva York, Virginia, Ohio y Carolina del Norte destacan con la mayor cantidad de vuelos. Esto refleja una fuerte presencia de la aerolínea en estas áreas.
En contraste, las regiones con menos vuelos de Republic Airline incluyen el oeste y el noroeste. Estados como California, Nevada y Washington tienen una cantidad significativamente menor de vuelos. Algunas áreas del oeste, como Montana, Wyoming y Alaska, no tienen vuelos de Republic Airline.
Ahora vamos a estudiar el rendimiento de las compañías aéreas en función de la región en la que operan. Para ello, vamos a generar una función que dependiendo del estado lo agrupe una región. Las regiones que hemos elegido son: Noreste, Medioatlántica, Mediooeste, Sur, Oeste y Territorios.
# Diccionario de mapeo de estados a regiones
regiones <- list(
Noreste = c("Maine", "Vermont", "Massachusetts", "Rhode Island", "Connecticut", "New York", "New Jersey", "Pennsylvania", "New Hampshire"),
Medioatlántica = c("Virginia", "North Carolina", "Alabama", "Kentucky", "Michigan", "Georgia", "Indiana", "Wisconsin", "Mississippi", "Ohio", "Florida", "South Carolina", "Massachusetts", "Rhode Island", "New Jersey", "Maryland", "Connecticut", "Illinois", "Pennsylvania", "West Virginia"),
Mediooeste = c("Minnesota", "Nebraska", "Iowa", "Missouri", "South Dakota", "North Dakota", "Kansas"),
Sur = c("Louisiana", "Arkansas", "Texas", "Oklahoma","Tennessee"),
Oeste = c("California", "Arizona", "Colorado", "Washington", "Oregon", "Utah", "Nevada", "New Mexico", "Montana", "Alaska", "Hawaii", "Idaho", "Wyoming"),
Territorios = c("Puerto Rico", "U.S. Virgin Islands", "U.S. Pacific Trust Territories and Possessions")
)
# Función para asignar la región a cada estado
asignar_region <- function(estado) {
for (region in names(regiones)) {
if (estado %in% regiones[[region]]) {
return(region)
}
}
}
Vamos a crear un nuevo dataframe agrupado por el nombre de la compañía con la información siguiente: total de salidas, salidas retrasadas, probabilidad de retraso, media de retraso de salida e índice de rendimiento. Después, con la función anterior, añadiremos una columna con la región a la que pertenece cada estado.
regiones_df<- df %>%
group_by(NOMBRE_COMP, ORIGIN_STATE_NM) %>%
dplyr::summarise(total_salidas = n(),
salidas_retrasadas = sum(DEP_DELAY > 0, na.rm = TRUE),
prob_retraso = round(salidas_retrasadas / total_salidas, 2),
media_retraso_salida = mean(salida_retraso, na.rm = TRUE),
indice_rend=round((prob_retraso*media_retraso_salida),2))
## `summarise()` has grouped output by 'NOMBRE_COMP'. You can override using the
## `.groups` argument.
regiones_df <- regiones_df %>%
mutate(region = sapply(ORIGIN_STATE_NM, asignar_region))
Una vez tenemos el dataframe con la información necesaria, vamos a estudiar el rendimiento de las compañías en función de la región en la que operan. En primer lugar, crearemos una nueva tabla filtrada por las 5 mejores compañías en cada región, ordenadas por el índice de rendimiento. Las condiciones necesarias para entrar dentro del dataframe es que el total de salidas sea mayor que 500 para una compañía en un estado.
regiones2 <- regiones_df %>%
filter(total_salidas > 500) %>%
arrange(indice_rend) %>%
group_by(region) %>%
slice_min(order_by = indice_rend, n = 5)
Ahora, realizaremos un gráfico de tarta con las 5 mejores compañías en cada región. De tal manera que para cada región, mostrará 5 compañías, las cuáles se pueden repetir ya que una compañía puede ser la mejor en diferentes estados que forman parte de una región. Es decir, por ejemplo Republic Airline puede que tenga los 5 mejores indíces de rendimiento en una región aunque sea en estados diferentes, por tanto veremos en alguna ocasión compañías que se repiten, como también podemos ver estados que se repiten ya que dos compañías pueden tener dos de los mejores indices de rendimiento de la región en un mismo estado. Si esto ocurre, significará que la compañía tiene muy buena calidad en esa región. Y si se repite el estado, significará que es un estado bastante óptimo para volar.
ggplot(subset(regiones2,region=="Mediooeste"), aes(x = "", y = indice_rend, fill = NOMBRE_COMP)) +
geom_bar(stat = "identity", width = 1,color="black") +
geom_text(aes(label = ORIGIN_STATE_NM), position = position_stack(vjust = 0.5), color = "white") +
coord_polar("y", start = 0) +
labs(title = ( "Mejores compañías Región Mediooeste"),
fill = "Nombre de Compañía",
y = "Índice de Rendimiento",
x = "") +
theme_void() +
theme(legend.position = "right")
En la región del Medio Oeste, las aerolíneas que sobresalen son Republic Airline, United Air Lines Inc., y GoJet Airlines LLC. Republic Airline se destaca con tres menciones en el gráfico, sugiriendo que es la aerolínea líder en esta región. Missouri es el estado más frecuente, apareciendo dos veces, lo que sugiere que es un excelente lugar para volar. Otros estados destacados incluyen Nebraska, Iowa y Kansas.
ggplot(subset(regiones2, region=="Medioatlántica"), aes(x = "", y = indice_rend, fill = NOMBRE_COMP)) +
geom_bar(stat = "identity", width = 1,color="black") +
geom_text(aes(label=ORIGIN_STATE_NM), position = position_stack(vjust = 0.5), color = "white") +
coord_polar("y", start = 0) +
labs(title =( "Mejores compañías Región Medioatlántica"),
fill = "Nombre de Compañía",
y = "Índice de Rendimiento",
x = "") +
theme_void() +
theme(legend.position = "right")
En la región del Medio Atlántico, las aerolíneas más destacadas son Republic Airline y Piedmont Airlines. Republic Airline tiene una fuerte presencia con cuatro menciones, consolidando su posición como la mejor aerolínea en esta área. Los estados con mejor rendimiento en esta región son Ohio, Indiana, Michigan, Illinois y Maryland, demostrando su superioridad en términos de rendimiento de vuelo.
ggplot(subset(regiones2, region=="Sur"), aes(x = "", y = indice_rend, fill = NOMBRE_COMP)) +
geom_bar(stat = "identity", width = 1,color="black") +
geom_text(aes(label=ORIGIN_STATE_NM), position = position_stack(vjust = 0.5), color = "white") +
coord_polar("y", start = 0) +
labs(title = ( "Mejores compañías Región Sur"),
fill = "Nombre de Compañía",
y = "Índice de Rendimiento",
x = "") +
theme_void() +
theme(legend.position = "right")
En la región Sur, las aerolíneas que destacan son Republic Airline, CommuteAir LLC y Endeavor Air Inc. Republic Airline aparece tres veces en el gráfico, sugiriendo su superioridad en esta región. Arkansas se menciona dos veces, indicando que es un excelente estado para volar. Otros estados con alto rendimiento en la región Sur incluyen Tennessee, Oklahoma y Louisiana.
ggplot(subset(regiones2, region=="Noreste"), aes(x = "", y = indice_rend, fill = NOMBRE_COMP)) +
geom_bar(stat = "identity", width = 1,color="black") +
geom_text(aes(label=ORIGIN_STATE_NM), position = position_stack(vjust = 0.5), color = "white") +
coord_polar("y", start = 0) +
labs(title = ( "Mejores compañías Región Noreste"),
fill = "Nombre de Compañía",
y = "Índice de Rendimiento",
x = "") +
theme_void() +
theme(legend.position = "right")
En la región Noreste, las aerolíneas más destacadas son Republic Airline y Piedmont Airlines. Republic Airline tiene una notable presencia con cuatro menciones, consolidando su reputación como una de las mejores aerolíneas en términos de rendimiento en Estados Unidos. Pennsylvania se repite, sugiriendo que es un excelente estado para volar. Otros estados con buen desempeño en la región Noreste son New Hampshire, Rhode Island y Connecticut.
ggplot(subset(regiones2, region=="Oeste"), aes(x = "", y = indice_rend, fill = NOMBRE_COMP)) +
geom_bar(stat = "identity", width = 1,color="black") +
geom_text(aes(label=ORIGIN_STATE_NM), position = position_stack(vjust = 0.5), color = "white") +
coord_polar("y", start = 0) +
labs(title = ( "Mejores compañías Región Oeste"),
fill = "Nombre de Compañía",
y = "Índice de Rendimiento",
x = "") +
theme_void() +
theme(legend.position = "right")
En la región Oeste, SkyWest Airlines Inc. se posiciona como la mejor compañía con cuatro representaciones en el top 5, seguida por Horizon Air. SkyWest Airlines Inc. domina esta región, con una fuerte presencia en Utah, Arizona, Montana y Washington.
ggplot(subset(regiones2, region=="Territorios"), aes(x = "", y = indice_rend, fill = NOMBRE_COMP)) +
geom_bar(stat = "identity", width = 1, color="black") +
geom_text(aes(label=stringr::str_wrap(ORIGIN_STATE_NM, width = 10)),
position = position_stack(vjust = 0.5),
color = "white",
size = 3.5) +
coord_polar("y", start = 0) +
labs(title = "Mejores compañías Región Territorios",
fill = "Nombre de Compañía",
y = "Índice de Rendimiento",
x = "") +
theme_void() +
theme(legend.position = "right")
En los territorios, hay una mayor variación de aerolíneas destacadas,
incluyendo United Air Lines Inc., Delta Air Lines Inc., Southwest
Airlines Co y American Airlines Inc. Sin embargo, es importante señalar
que estos territorios presentan peores índices de rendimiento en
comparación con el top 5 de las demás regiones.
En resumen, podemos concluir que Republic Airline es la aerolínea con mejor rendimiento en la mayoría de las regiones, con una fuerte presencia en el Medio Oeste, Medio Atlántico y Sur. SkyWest Airlines Inc. lidera en la región Oeste, mientras que en los territorios, hay una mayor variación de aerolíneas destacadas.